package com.atguigu.gmall.list.service;

import com.atguigu.gmall.list.model.SearchParam;
import com.atguigu.gmall.list.model.SearchResponseVo;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;

public interface SearchService {

    /**
     * 商品上架，需要构建索引库文档对象；将文档存入索引库
     * @param skuId
     */
    void upperGoods(Long skuId);

    /**
     * 商品下架，将商品文档从索引库删除
     * @param skuId
     */
    void lowerGoods(Long skuId);

    /**
     * 对指定商品热门分值进行增加/减少
     *
     * @param skuId
     * @param incrscore
     */
    void incrHotScore(String skuId, int incrscore);

    /**
     * 站内商品检索接口
     *
     * @param searchParam
     * @return
     */
    SearchResponseVo search(SearchParam searchParam);

    /**
     * 基于入参查询条件，封装DSL语句相关请求路径以及请求体参数
     * @param searchParam
     * @return
     */
    SearchRequest buildDSL(SearchParam searchParam);

    /**
     * 解析ES响应结果
     *
     * @param response
     * @param searchParam
     * @return
     */
    SearchResponseVo parseResult(SearchResponse response, SearchParam searchParam);
}
